<?php

require_once('../krn_table.php');
require_once('../commons_constantes.php');
require_once('../commons_atom.php');

tableDefinition
	(TABLE_DEFINITION
	,'tblLivreOr'
	,WEDDING_DBNAME
	,'LIVRE_OR'
	,array
		('ID'
		,'ID_MARIAGE'
		,'NOM_PRENOM'
		,'MESSAGE'
		,'DATE_INSERTION'
		,'DATE_MAJ'
		)
	);
	
	
/***********************************************************************************************************
 * Définition des fonctions d'interactions
 ***********************************************************************************************************/

/**
 * Méthode pour ajouter un message au livre d'or : ajout dans la table LIVRE_OR
 * @param $idMariage identifiant technique du mariage auquel est destiné le message
 * @param $nomPrenom nom et/ou prénom de la personne envoyant le message
 * @param $message message à destination des mariés
 * @return int identifiant du message inséré
 */
function ajouterMessage
	($idMariage
	,$nomPrenom
	,$message
	)
{
	$dateInsert = gmdate('c');
	
	$idInserted = insert
					('tblLivreOr'
					,array
						('ID_MARIAGE'		=> '?'
						,'NOM_PRENOM'		=> '?'
						,'MESSAGE'			=> '?'
						,'DATE_INSERTION'	=> '?'
						,'DATE_MAJ'			=> '?'
						)
					,array
						($idMariage
						,htmlEncode($nomPrenom)
						,htmlEncode($message)
						,$dateInsert
						,$dateInsert
						)
					);
	return $idInserted;
}



/**
 * Retourne le tableau associatif du message du livre d'or d'identifiant $idLivreOr.<br />
 * Retourne un tableau vide si le message d'identifiant $idLivreOr n'existe pas
 * @param $idLivreOr identifiant du message du livre d'or cherché
 * @return array : un tableau vide ou associatif nom de colonne - valeur
 * @throws Exception : code 406 (plusieurs ressources)
 */
function getLivreOr($idLivreOr) {
	$livreOr = select('tblLivreOr', '*', 'WHERE ID = ?', array($idLivreOr));
	if (count($livreOr) > 1) {
		throw new Exception('Plusieurs messages d\'identifiant '.$livreOr.' ont été retournés', ERR_NOT_ACCEPTABLE);
	} elseif (count($livreOr) == 1) {
		return $livreOr[0];
	}
	return $livreOr; 
}

/**
 * Retourne la liste des messages du livre d'or du mariage d'identifiant $idMariage
 * @param $idMariage identifiant du mariage pour lequel on cherche la liste des messages du livre d'or
 * @return array : liste vide ou liste des messages du livre d'or du mariage d'identifiant $idMariage
 */
function getListeLivreOrByMariage($idMariage) {
	return getListeLivreOrByMariageSorted($idMariage, null);
}

/**
 * Retourne la liste des messages du livre d'or du mariage d'identifiant $idMariage
 * @param $idMariage identifiant du mariage pour lequel on cherche la liste des messages du livre d'or
 * @return array : liste vide ou liste des messages du livre d'or du mariage d'identifiant $idMariage
 */
function getListeLivreOrByMariageSorted($idMariage, $isSortedAsc = null) {
	$order = '';
	if (!is_null($isSortedAsc)) {
		if ($isSortedAsc) {
			$order = ' ORDER BY NOM_PRENOM ASC';
		} else {
			$order = ' ORDER BY NOM_PRENOM DESC';
		}
	}
	$selQuery = 'SELECT * FROM '.tableNameGet('tblLivreOr').' WHERE ID_MARIAGE=?' . $order;
	$bindings = array($idMariage);
	$listLivreOr = executeSelectQuery('tblLivreOr', $selQuery, $bindings);
	return $listLivreOr;
}

/**
 * Mets à jour le message du livre d'or d'identifiant $idLivreOr
 * @param $idLivreOr
 * @param $message
 * @param $dateMaj
 * @return true / false
 */
function updateLivreOr
	($idLivreOr
	,$message
	,$dateMaj=null
	) 
{
	if ($dateMaj == null) {
		$dateMaj = gmdate('c');
	}
					
	$updated = update
			('tblLivreOr'
			,array
				('MESSAGE'		=> '?'
				,'DATE_MAJ'		=> '?'
				)
			,'WHERE ID=?'
			,array
				($message
				,$dateMaj
				,$idLivreOr
				)
			);
	return $updated;
}
	